﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SushiSOAPServices.Persistencia;
using SushiSOAPServices.Dominio;
using SushiSOAPServices.Exceptions;

namespace SushiSOAPServices
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "AtencionPedidos" en el código, en svc y en el archivo de configuración a la vez.
    public class AtencionPedidos : IAtencionPedidos
    {
        private AtencionPedidosDAO atencionpedidosDAO = null;
        private AtencionPedidosDAO AtencionpedidosDAO
        {
            get
            {
                if (atencionpedidosDAO == null)
                    atencionpedidosDAO = new AtencionPedidosDAO();
                return atencionpedidosDAO;
            }
        }

        public List<PedidoAtendido> ListarPedidosAtendidos()
        {
            return AtencionpedidosDAO.obtenerPedidosPorAtender();
        }

        public List<DetallePedido> ObtenerDetalle(int idPedido)
        {
            return AtencionpedidosDAO.ObtenerDetalle(idPedido);
        }

        public String asignarTrabajador(int idPedido, int idPersona)
        {
            int validarAsignacion = AtencionpedidosDAO.ObtenerPorEmpleadoEnEnvio(idPersona);
            
            if (validarAsignacion > 0)
            {
                AtencionExceptions ex = new AtencionExceptions { Message = "El empleado seleccionado ya se encuentra seleccionado a un Pedido." };
                throw new FaultException<AtencionExceptions>(ex, ex.Message);
            }

            string salida = AtencionpedidosDAO.asignarTrabajador(idPedido, idPersona);

            return salida;
        }

        public String cambiarEstadoPedido(int idPedido, string estado) 
        {
            return AtencionpedidosDAO.cambiarEstadoPedido(idPedido, estado);
        }
        public List<Persona> ObtenerPersona()
        {
            return AtencionpedidosDAO.ObtenerPersona();
        }
    }
}
